import io from 'socket.io-client';
import { showNotify } from 'vant'; // 导入Vant的通知组件
let socket;

// 修改连接逻辑
export function connectWebSocket() {
  // 从 localStorage 获取用户 ID（替代从 store 获取）
  const admin = JSON.parse(localStorage.getItem("admin") || 'null');
  const userId = admin?.id; // 直接从 admin 中获取 id
  
 // 先断开旧连接
  if (socket) {
    socket.disconnect();
  }

  if (!userId) {
    console.warn('用户未登录，无法连接WebSocket');
    return;
  }

socket = io('http://localhost:8081', {
    query: { userId },
    reconnection: true,
    reconnectionAttempts: 5,
    timeout: 10000,
    withCredentials: false // 明确关闭凭证模式，避免冲突
  });

  // 连接成功
  socket.on('connect', () => {
    console.log('✅ WebSocket连接成功');
    showNotify({
      message: '通知连接已建立',
      type: 'success',
      duration: 2000
    });
  });

  // 接收消息
  socket.on('newNotification', (data) => {
    console.log('收到消息: ', data);
    handleMessage(data);
  });

  // 连接错误
  socket.on('connect_error', (error) => {
    console.error('❌ 连接失败：', error.message);
    showNotify({
      message: '通知连接失败',
      type: 'error',
      duration: 3000
    });
  });

  // 断开连接
  socket.on('disconnect', (reason) => {
    console.log('🔌 连接断开：', reason);
  });
}

// 处理消息
function handleMessage(data) {
  // 显示通知
  showNotification(data);
  // 播放提示音
  playNotificationSound();
  // 触发全局事件供其他组件使用
  window.dispatchEvent(new CustomEvent('newNotification', { detail: data }));
}

// 显示通知（使用Vant的showNotify）
function showNotification(data) {
  showNotify({
    title: '新动态',
    message: `${data.authorName}发布了新内容: ${data.title}`,
    type: 'primary',
    duration: 4000,
    onClick: () => {
      // 点击通知跳转到详情页
      window.location.href = `/follow-detail?id=${data.contentId}`;
    }
  });
}

// 播放通知音效（修复播放失败问题）
function playNotificationSound() {
  // 使用备用音效URL，确保格式正确
  const soundUrls = [
    'https://assets.mixkit.co/sfx/preview/mixkit-software-interface-start-2574.mp3',
    'https://assets.mixkit.co/sfx/preview/mixkit-notification-alarm-995.mp3',
    'https://assets.mixkit.co/sfx/preview/mixkit-positive-interface-beep-221.mp3'
  ];

  // 尝试播放第一个可用的音效
  const playSound = (urlIndex = 0) => {
    if (urlIndex >= soundUrls.length) {
      console.log('所有音效源都无法播放');
      return;
    }

    const audio = new Audio(soundUrls[urlIndex]);
    audio.volume = 0.3;
    
    audio.play()
      .then(() => console.log('通知音效播放成功'))
      .catch(error => {
        console.log(`音效源${urlIndex + 1}播放失败，尝试下一个`, error);
        playSound(urlIndex + 1);
      });
  };

  playSound();
}

export function disconnectWebSocket() {
  if (socket) {
    socket.disconnect();
    console.log('主动断开WebSocket连接');
  }
}